/*
* ============================================================================
* 功能描述 ：adc功能
* 作者       ：ggls
* 创建日期 ：2024.04.10
* ----------------------------------------------------------------------------
* 更新历史 ：
*	日期 　　- 修改者   : 更新内容描述
*
* ============================================================================
*/

#include "main.h"


void ADC_INIT()
{
	ADCON0 = 0B10000001;   //	
	ADCON1 = 0B00000011;	
	
	TRISB6 = 1;

	ADON = 1;

}

/******************************************
  返回  Adc_Result 
  
 ADCchannel 为输入AD通道 0-18
             19  检测内部1.2V 
			 20  检测PGA输出
 ADCLDORef =1,开启内部LDO 2V 作为ADC 参考
 ADCLDORef =2,开启内部LDO 2.4V 作为ADC 参考
 ADCLDORef =0,VDD 作为ADC 参考
*****************************************/
unsigned int  Read_ADC(unsigned char      ADCchannel,unsigned char   ADCLDORef)
{
 unsigned int	Adc_Result;
	unsigned char i=200;
	
	
	if(ADCLDORef==0)
	{
		ADCON1 = 0B00000000;
	}
	else if(ADCLDORef==1)
	{
		ADCON1 = 0B00000101;
	}
	else
	{
    	ADCON1 = 0B00000110;	
	}
	
	CHS4 = 0;	
	if(ADCchannel >=16)
	{
		ADCchannel -= 16;	
		CHS4 = 1;	
	}
	
	ADCON0 &= 0b11000011;
	ADCON0 |= ADCchannel<<2; 
	asm("nop");
	GODONE = 1;
	while(GODONE==1&&i>0)
	{
		i--;
		asm("nop");
	}
	Adc_Result = ADRESH<<4;
	Adc_Result += ADRESL>>4;
	
	return Adc_Result;
	
}




